﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using BingVis.Common;
using Moq;
using BingVis.GoogleTransit;
using System.Threading;

namespace BingVis.GoogleTransit.Test
{
    /// <summary>
    /// Summary description for TransitStopLoaderTest
    /// </summary>
    [TestClass]
    public class TransitStopLoaderTest
    {


        #region Stop Test File Contents
        private string[] testContents = 
        {
            @"stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,location_type,parent_station",
            @"place-alfcl, ,Alewife Station, ,42.395428,-71.142483, ,1, ",
            @"place-andrw, ,Andrew Station, ,42.330154,-71.057655, ,1, ",
            @"place-aport, ,Airport Station, ,42.374262,-71.030395, ,1, ",
            @"place-aqucl, ,Aquarium Station, ,42.359784,-71.051652, ,1, ",
            @"place-armnl, ,Arlington Station, ,42.351902,-71.070893, ,1, ",
            @"place-asmnl, ,Ashmont Station, ,42.284652,-71.064489, ,1, ",
            @"place-bbsta, ,Back Bay Station, ,42.34735,-71.075727, ,1, ",
            @"place-bmmnl, ,Beachmont Station, ,42.39754234,-70.99231944, ,1, ",
            @"place-bomnl, ,Bowdoin Station, ,42.361365,-71.062037, ,1, ",
            @"place-brdwy, ,Broadway Station, ,42.342622,-71.056967, ,1, ",
            @"place-brmnl, ,Brigham Circle Station, ,42.334229,-71.104609, ,1, ",
            @"place-brntn, ,Braintree Station, ,42.2078543,-71.0011385, ,1, ",
            @"place-bvmnl, ,Brookline Village Station, ,42.332774,-71.116296, ,1, ",
            @"place-ccmnl, ,Community College Station, ,42.373622,-71.069533, ,1, ",
            @"place-chmnl, ,Charles/MGH Station, ,42.361166,-71.070628, ,1, ",
            @"place-chncl, ,Chinatown Station, ,42.352547,-71.062752, ,1, ",
            @"place-clmnl, ,Cleveland Circle Station, ,42.336142,-71.149326, ,1, ",
            @"place-cntsq, ,Central Square Station, ,42.365486,-71.103802, ,1, ",
            @"place-coecl, ,Copley Station, ,42.349974,-71.077447, ,1, ",
            @"place-davis, ,Davis Station, ,42.39674,-71.121815, ,1, ",
            @"place-dwnxg, ,Downtown Crossing Station, ,42.355518,-71.060225, ,1, ",
            @"place-fldcr, ,Fields Corner Station, ,42.300093,-71.061667, ,1, ",
            @"place-forhl, ,Forest Hills Station, ,42.300523,-71.113686, ,1, ",
            @"place-gover, ,Government Center Station, ,42.359705,-71.059215, ,1, ",
            @"place-grnst, ,Green St. Station, ,42.310525,-71.107414, ,1, ",
            @"place-haecl, ,Haymarket Station, ,42.363021,-71.05829, ,1, ",
            @"place-harsq, ,Harvard Square Station, ,42.373362,-71.118956, ,1, ",
            @"place-hsmnl, ,Heath St. Station, ,42.328681,-71.110559, ,1, ",
            @"place-hymnl, ,Hynes Convention Center Station, ,42.347888,-71.087903, ,1, ",
            @"place-jaksn, ,Jackson Square Station, ,42.323132,-71.099592, ,1, ",
            @"place-jfkred, ,JFK/UMass Station, ,42.320685,-71.052391, ,1, ",
            @"place-kencl, ,Kenmore Station, ,42.348949,-71.095169, ,1, ",
            @"place-knncl, ,Kendall/MIT Station, ,42.36249079,-71.08617653, ,1, ",
            @"place-lake, ,Boston College Station, ,42.340081,-71.166769, ,1, ",
            @"place-lech, ,Lechmere Station, ,42.370772,-71.076536, ,1, ",
            @"place-masta, ,Massachusetts Ave. Station, ,42.341512,-71.083423, ,1, ",
            @"place-matt, ,Mattapan Station, ,42.267762,-71.092241, ,1, ",
            @"place-mlmnl, ,Malden Center Station, ,42.426632,-71.07411, ,1, ",
            @"place-mvbcl, ,Maverick Station, ,42.36911856,-71.03952958, ,1, ",
            @"place-nemnl, ,New England Medical Center Station, ,42.349662,-71.063917, ,1, ",
            @"place-north, ,North Station, ,42.365577,-71.06129, ,1, ",
            @"place-nqncy, ,North Quincy Station, ,42.275275,-71.029583, ,1, ",
            @"place-ogmnl, ,Oak Grove Station, ,42.43668,-71.071097, ,1, ",
            @"place-orhte, ,Orient Heights Station, ,42.386867,-71.004736, ,1, ",
            @"place-pktrm, ,Park St. Station, ,42.35639457,-71.0624242, ,1, ",
            @"place-portr, ,Porter Square Station, ,42.3884,-71.119149, ,1, ",
            @"place-prmnl, ,Prudential Station, ,42.34557,-71.081696, ,1, ",
            @"place-qamnl, ,Quincy Adams Station, ,42.233391,-71.007153, ,1, ",
            @"place-qnctr, ,Quincy Center Station, ,42.251809,-71.005409, ,1, ",
            @"place-rbmnl, ,Revere Beach Station, ,42.40784254,-70.99253321, ,1, ",
            @"place-rcmnl, ,Roxbury Crossing Station, ,42.331397,-71.095451, ,1, ",
            @"place-river, ,Riverside Station, ,42.337059,-71.251742, ,1, ",
            @"place-rsmnl, ,Reservoir Station, ,42.335027,-71.148952, ,1, ",
            @"place-rugg, ,Ruggles Station, ,42.336377,-71.088961, ,1, ",
            @"place-sbmnl, ,Stony Brook Station, ,42.317062,-71.104248, ,1, ",
            @"place-sdmnl, ,Suffolk Downs Station, ,42.39050067,-70.99712259, ,1, ",
            @"place-shmnl, ,Savin Hill Station, ,42.31129,-71.053331, ,1, ",
            @"place-smmnl, ,Shawmut Station, ,42.29312583,-71.06573796, ,1, ",
            @"place-spmnl, ,Science Park Station, ,42.366664,-71.067666, ,1, ",
            @"place-sstat, ,South Station, ,42.352271,-71.055242, ,1, ",
            @"place-state, ,State St. Station, ,42.358978,-71.057598, ,1, ",
            @"place-sull, ,Sullivan Station, ,42.383975,-71.076994, ,1, ",
            @"place-symcl, ,Symphony Station, ,42.342687,-71.085056, ,1, ",
            @"place-welln, ,Wellington Station, ,42.40237,-71.077082, ,1, ",
            @"place-wimnl, ,Wood Island Station, ,42.3796403,-71.02286539, ,1, ",
            @"place-wlsta, ,Wollaston Station, ,42.2665139,-71.0203369, ,1, ",
            @"place-wondl, ,Wonderland Station, ,42.41342,-70.991648, ,1, ",
            @"15095, ,Washington St @ Herald St, ,42.346516,-71.064552, , , ",
            @"15176, ,Washington St @ Worcester St, ,42.337368,-71.075905, , , ",
            @"17091, ,Terminal A, ,42.364403,-71.021484, , , ",
            @"17093, ,Terminal B Stop 2, ,42.36446,-71.018814, , , ",
            @"17094, ,Terminals C & D, ,42.367477,-71.018143, , , ",
            @"17095, ,Terminal E, ,42.370258,-71.020462, , , ",
            @"17096, ,Congress @ World Trade Center Sta, ,42.348125,-71.042221, , , ",
            @"1787, ,Washington St @ Worcester St, ,42.337536,-71.075478, , , ",
            @"1788, ,Washington St @ E Newton St, ,42.338776,-71.073677, , , ",
            @"19402, ,Washington St @ W Newton St, ,42.338802,-71.073822, , , ",
            @"247, ,Northern Ave @ Harbor St, ,42.346657,-71.03524, , , ",
            @"27092, ,Terminal  B Stop 1, ,42.361343,-71.018578, , , ",
            @"3, ,Washington St @ Melnea Cass Blvd - Silver Line, ,42.333054,-71.080833, , , ",
            @"30249, ,Northern Ave @ Tide St, ,42.345093,-71.031982, , , ",
            @"30250, ,21 Dry Dock Ave, ,42.344673,-71.030998, , , ",
            @"30251, ,25 Dry Dock Ave, ,42.344719,-71.028419, , , ",
            @"30255, ,Black Falcon Ave @ Design Center Place, ,42.343925,-71.034187, , , ",
            @"31255, ,Dry Dock Ave @ Design Center Place, ,42.34462,-71.034454, , , ",
            @"31256, ,306 Northern Ave, ,42.347637,-71.035736, , , ",
            @"31257, ,Northern Ave @ Tide St, ,42.345207,-71.031998, , , ",
            @"31258, ,88 Black Falcon, ,42.344563,-71.027176, , , ",
            @"31259, ,Black Falcon corner stop, ,42.344246,-71.027214, , , ",
            @"4, ,Washington St @ Lenox St, ,42.334961,-71.078873, , , ",
            @"49001, ,Temple Pl @ Washington St, ,42.3554,-71.06221, , , ",
            @"49002, ,Washington St @ NE Med Ctr, ,42.349662,-71.063917, , ,place-nemnl",
            @"49003, ,Washington St @ Herald St, ,42.34647,-71.064697, , , ",
            @"5, ,Washington St @ Massachusetts Ave, ,42.336353,-71.077072, , , ",
            @"5093, ,Washington St @ Union Pk, ,42.34132,-71.069412, , , ",
            @"5095, ,Washington St @ E Berkeley St, ,42.343838,-71.065926, , , ",
            @"5098, ,Washington St @ E Berkeley St, ,42.343822,-71.066071, , , ",
            @"5100, ,Washington St @ Union Pk, ,42.341377,-71.069542, , , ",
            @"55, ,Washington St @ Massachusetts Ave, ,42.336376,-71.077209, , , ",
            @"60, ,Washington St @ Lenox St, ,42.334976,-71.078949, , , ",
            @"61, ,Washington St @ Melnea Cass Blvd, ,42.332649,-71.081245, , , ",
            @"64, ,Dudley Station - Harvard Side, ,42.329483,-71.083908, , , ",
            @"6565, ,Washington St @ NE Med Ctr, ,42.349662,-71.063917, , ,place-nemnl",
            @"6567, ,Washington St @ Essex St, ,42.352551,-71.062508, , , ",
            @"70001, ,Forest Hills Orange Line, ,42.300523,-71.113686, , ,place-forhl",
            @"70002, ,Green Street Station - Outbound, ,42.310525,-71.107414, , ,place-grnst",
            @"70003, ,Green St - Inbound, ,42.310525,-71.107414, , ,place-grnst",
            @"70004, ,Stoneybrook -  Outbound, ,42.317062,-71.104248, , ,place-sbmnl",
            @"70005, ,Stoneybrook -  Inbound, ,42.317062,-71.104248, , ,place-sbmnl",
            @"70006, ,Jackson Sq -  Outbound, ,42.323132,-71.099592, , ,place-jaksn",
            @"70007, ,Jackson Sq Orange Line Inbound, ,42.323132,-71.099592, , ,place-jaksn",
            @"70008, ,Roxbury Xng - Outbound, ,42.331397,-71.095451, , ,place-rcmnl",
            @"70009, ,Roxbury Xng - Inbound, ,42.331397,-71.095451, , ,place-rcmnl",
            @"70010, ,Ruggles Sta -  Outbound, ,42.336377,-71.088961, , ,place-rugg",
            @"70011, ,Ruggles Sta - Inbound, ,42.336377,-71.088961, , ,place-rugg",
            @"70012, ,Massachusetts Ave Sta - Outbound, ,42.341512,-71.083423, , ,place-masta",
            @"70013, ,Massachusetts Ave Sta - Inbound, ,42.341512,-71.083423, , ,place-masta",
            @"70014, ,Back Bay Station - Outbound, ,42.34735,-71.075727, , ,place-bbsta",
            @"70015, ,Back Bay Sta - Inbound, ,42.34735,-71.075727, , ,place-bbsta",
            @"70016, ,NE Medical Ctr - Outbound, ,42.349662,-71.063917, , ,place-nemnl",
            @"70017, ,NE Medical Ctr - Inbound, ,42.349662,-71.063917, , ,place-nemnl",
            @"70018, ,Chinatown Station - Outbound, ,42.352547,-71.062752, , ,place-chncl",
            @"70019, ,Chinatown Station - Inbound, ,42.352547,-71.062752, , ,place-chncl",
            @"70020, ,Downtown Crossing - to Forest Hills, ,42.355518,-71.060225, , ,place-dwnxg",
            @"70021, ,Downtown Crossing - to Oak Grove, ,42.355518,-71.060225, , ,place-dwnxg",
            @"70022, ,State St Orange Line to Forest Hills, ,42.358978,-71.057598, , ,place-state",
            @"70023, ,State St - to Oak Grove, ,42.358978,-71.057598, , ,place-state",
            @"70024, ,Haymarket Station - Inbound, ,42.363021,-71.05829, , ,place-haecl",
            @"70025, ,Haymarket Station - Outbound, ,42.363021,-71.05829, , ,place-haecl",
            @"70026, ,North Station - Inbound, ,42.365577,-71.06129, , ,place-north",
            @"70027, ,North Station - Outbound, ,42.365577,-71.06129, , ,place-north",
            @"70028, ,Community College - Inbound, ,42.373622,-71.069533, , ,place-ccmnl",
            @"70029, ,Community College - Outbound, ,42.373622,-71.069533, , ,place-ccmnl",
            @"70030, ,Sullivan Station - Inbound, ,42.383975,-71.076994, , ,place-sull",
            @"70031, ,Sullivan Station - Outbound, ,42.383975,-71.076994, , ,place-sull",
            @"70032, ,Wellington Station - Inbound, ,42.40237,-71.077082, , ,place-welln",
            @"70033, ,Wellington Station - Outbound, ,42.40237,-71.077082, , ,place-welln",
            @"70034, ,Malden Station - Inbound, ,42.426632,-71.07411, , ,place-mlmnl",
            @"70035, ,Malden Station - Outbound, ,42.426632,-71.07411, , ,place-mlmnl",
            @"70036, ,Oak Grove Station - Orange Line, ,42.43668,-71.071097, , ,place-ogmnl",
            @"70038, ,Bowdoin Station Blue Line, ,42.361365,-71.062037, , ,place-bomnl",
            @"70039, ,Government Center Station - to Bowdoin Staion, ,42.359705,-71.059215, , ,place-gover",
            @"70040, ,Government Ctr Station - to Wonderland, ,42.359705,-71.059215, , ,place-gover",
            @"70041, ,State St Station - to Bowdoin, ,42.358978,-71.057598, , ,place-state",
            @"70042, ,State St Station - Blue Line Eastbound, ,42.358978,-71.057598, , ,place-state",
            @"70043, ,Aquarium Station - Inbound, ,42.359784,-71.051652, , ,place-aqucl",
            @"70044, ,Aquarium Station - Outbound, ,42.359784,-71.051652, , ,place-aqucl",
            @"70045, ,Maverick Station - Inbound, ,42.36911856,-71.03952958, , ,place-mvbcl",
            @"70046, ,Maverick Station - Outbound, ,42.36911856,-71.03952958, , ,place-mvbcl",
            @"70047, ,Airport Station - Blue Line Inbound, ,42.374262,-71.030395, , ,place-aport",
            @"70048, ,Airport Station - Outbound, ,42.374262,-71.030395, , ,place-aport",
            @"70049, ,Wood Island Station - Inbound, ,42.3796403,-71.02286539, , ,place-wimnl",
            @"70050, ,Wood Island Station - Outbound, ,42.3796403,-71.02286539, , ,place-wimnl",
            @"70051, ,Orient Heigts Station - Inbound, ,42.386867,-71.004736, , ,place-orhte",
            @"70052, ,Orient Heigts Station - Outbound, ,42.386867,-71.004736, , ,place-orhte",
            @"70053, ,Suffolk Downs Station - Inbound, ,42.39050067,-70.99712259, , ,place-sdmnl",
            @"70054, ,Suffolk Downs Station - Outbound, ,42.39050067,-70.99712259, , ,place-sdmnl",
            @"70055, ,Beachmont Station - Inbound, ,42.39754234,-70.99231944, , ,place-bmmnl",
            @"70056, ,Beachmont Station - Outbound, ,42.39754234,-70.99231944, , ,place-bmmnl",
            @"70057, ,Revere Beach Station - Inbound, ,42.40784254,-70.99253321, , ,place-rbmnl",
            @"70058, ,Revere Beach Station - Outbound, ,42.40784254,-70.99253321, , ,place-rbmnl",
            @"70060, ,Wonderland Station -  Blue Line, ,42.41342,-70.991648, , ,place-wondl",
            @"70061, ,Alewife Station Red Line, ,42.395428,-71.142483, , ,place-alfcl",
            @"70063, ,Davis Sq - Inbound, ,42.39674,-71.121815, , ,place-davis",
            @"70064, ,Davis Square - Outbound, ,42.39674,-71.121815, , ,place-davis",
            @"70065, ,Porter Sq - Inbound, ,42.3884,-71.119149, , ,place-portr",
            @"70066, ,Porter Sq - Outbound, ,42.3884,-71.119149, , ,place-portr",
            @"70067, ,Harvard Station - Inbound, ,42.373362,-71.118956, , ,place-harsq",
            @"70068, ,Harvard Station - Outbound, ,42.373362,-71.118956, , ,place-harsq",
            @"70069, ,Central Sq - Inbound, ,42.365486,-71.103802, , ,place-cntsq",
            @"70070, ,Central Sq - Outbound, ,42.365486,-71.103802, , ,place-cntsq",
            @"70071, ,Kendall/MIT Station - Inbound, ,42.36249079,-71.08617653, , ,place-knncl",
            @"70072, ,Kendall/MIT Station - Outbound, ,42.36249079,-71.08617653, , ,place-knncl",
            @"70073, ,Charles/MGH Station -  Inbound, ,42.361166,-71.070628, , ,place-chmnl",
            @"70074, ,Charles/MGH Station - Outbound, ,42.361166,-71.070628, , ,place-chmnl",
            @"70075, ,Park St Station - to Ashmont/Braintree, ,42.35639457,-71.0624242, , ,place-pktrm",
            @"70076, ,Park St Station - to Alewife, ,42.35639457,-71.0624242, , ,place-pktrm",
            @"70077, ,Downtown Crossing - to Ashmont/Braintree, ,42.355518,-71.060225, , ,place-dwnxg",
            @"70078, ,Downtown Crossing - to Alewife, ,42.355518,-71.060225, , ,place-dwnxg",
            @"70079, ,South Station - Outbound, ,42.352271,-71.055242, , ,place-sstat",
            @"70080, ,South Station - Inbound, ,42.352271,-71.055242, , ,place-sstat",
            @"70081, ,Broadway Station - Outbound, ,42.342622,-71.056967, , ,place-brdwy",
            @"70082, ,Broadway Station - Inbound, ,42.342622,-71.056967, , ,place-brdwy",
            @"70083, ,Andrew Sq Station - Outbound, ,42.330154,-71.057655, , ,place-andrw",
            @"70084, ,Andrew Sq Station - Inbound, ,42.330154,-71.057655, , ,place-andrw",
            @"70085, ,JFK/UMASS Ashmont - Outbound, ,42.320685,-71.052391, , ,place-jfkred",
            @"70086, ,JFK/UMASS Ashmont Line Inbound, ,42.320685,-71.052391, , ,place-jfkred",
            @"70087, ,Savin Hill Station - Outbound, ,42.31129,-71.053331, , ,place-shmnl",
            @"70088, ,Savin Hill Station - Inbound, ,42.31129,-71.053331, , ,place-shmnl",
            @"70089, ,Fields Corner Station - Outbound, ,42.300093,-71.061667, , ,place-fldcr",
            @"70090, ,Fields Corner Station - Inbound, ,42.300093,-71.061667, , ,place-fldcr",
            @"70091, ,Shawmut Station - Outbound, ,42.29312583,-71.06573796, , ,place-smmnl",
            @"70092, ,Shawmut Station - Inbound, ,42.29312583,-71.06573796, , ,place-smmnl",
            @"70093, ,Ashmont Station - Red Line, ,42.284652,-71.064489, , ,place-asmnl",
            @"70094, ,Ashmont Station Red Line Inbound, ,42.284652,-71.064489, , ,place-asmnl",
            @"70095, ,JFK/UMASS Braintree - Outbound, ,42.320685,-71.052391, , ,place-jfkred",
            @"70096, ,JKF/UMASS Braintree - Inbound, ,42.320685,-71.052391, , ,place-jfkred",
            @"70097, ,No Quincy Staion - Outbound, ,42.275275,-71.029583, , ,place-nqncy",
            @"70098, ,No Quincy Station - Inbound, ,42.275275,-71.029583, , ,place-nqncy",
            @"70099, ,Wollaston Station - Outbound, ,42.2665139,-71.0203369, , ,place-wlsta",
            @"70100, ,Wollaston Station Red Line Inbound, ,42.2665139,-71.0203369, , ,place-wlsta",
            @"70101, ,Quincy Center Station - Outbound, ,42.251809,-71.005409, , ,place-qnctr",
            @"70102, ,Quincy Center Station - Inbound, ,42.251809,-71.005409, , ,place-qnctr",
            @"70103, ,Quincy Adams Station - Outbound, ,42.233391,-71.007153, , ,place-qamnl",
            @"70104, ,Quincy Adams Station - Inbound, ,42.233391,-71.007153, , ,place-qamnl",
            @"70105, ,Braintree Station Red Line Platform, ,42.2078543,-71.0011385, , ,place-brntn",
            @"70106, ,Boston College Station - Inbound, ,42.340081,-71.166769, , ,place-lake",
            @"70107, ,Boston College Station - Green Line, ,42.340081,-71.166769, , ,place-lake",
            @"70110, ,South St - Inbound, ,42.339474,-71.157616, , , ",
            @"70111, ,South St -  Outbound, ,42.339649,-71.157616, , , ",
            @"70112, ,Chestnut Hill Ave - Inbound, ,42.338161,-71.152954, , , ",
            @"70113, ,Chestnut Hill Ave - Outbound, ,42.338211,-71.153206, , , ",
            @"70114, ,Chiswick Rd - Inbound, ,42.340855,-71.150452, , , ",
            @"70115, ,Chiswick Rd - Green Line B Outbound, ,42.340816,-71.150772, , , ",
            @"70116, ,Sutherland Rd - Inbound, ,42.341499,-71.146156, , , ",
            @"70117, ,Sutherland Rd - Outbound, ,42.341705,-71.14621, , , ",
            @"70120, ,Washington St - Inbound, ,42.34383,-71.142723, , , ",
            @"70121, ,Washington St - Outbound, ,42.343884,-71.142967, , , ",
            @"70124, ,Warren St - Inbound, ,42.348385,-71.140221, , , ",
            @"70125, ,Warren St - Outbound, ,42.348358,-71.140434, , , ",
            @"70126, ,Allston St - Inbound, ,42.348488,-71.137878, , , ",
            @"70127, ,Allston St - Outbound, ,42.348625,-71.13797, , , ",
            @"70128, ,Griggs St - Inbound, ,42.34856,-71.134544, , , ",
            @"70129, ,Griggs St - Outbound, ,42.348511,-71.134918, , , ",
            @"70130, ,Harvard Ave - Inbound, ,42.350136,-71.131187, , , ",
            @"70131, ,Harvard Ave - Westbound, ,42.350231,-71.131325, , , ",
            @"70134, ,Packards Corner - Inbound, ,42.351849,-71.124695, , , ",
            @"70135, ,Packards Corner - Outbound, ,42.35194,-71.124962, , , ",
            @"70136, ,Babcock St - Inbound, ,42.351707,-71.121536, , , ",
            @"70137, ,Babcock St - Outbound, ,42.351894,-71.121635, , , ",
            @"70138, ,Pleasant St - Inbound, ,42.351364,-71.118774, , , ",
            @"70139, ,Pleasant St - Outbound, ,42.351574,-71.118881, , , ",
            @"70140, ,Saint Paul St - Inbound, ,42.351013,-71.11599, , , ",
            @"70141, ,Saint Paul St - Outbound, ,42.351231,-71.116096, , , ",
            @"70142, ,Boston Univ West - Inbound, ,42.350777,-71.113823, , , ",
            @"70143, ,Boston Univ West - Green Line B Outbound, ,42.350956,-71.113869, , , ",
            @"70144, ,Boston Univ Central - Inbound, ,42.349907,-71.106796, , , ",
            @"70145, ,Boston Univ Central - Outbound, ,42.350113,-71.106842, , , ",
            @"70146, ,Boston Univ East - Inbound, ,42.349586,-71.103859, , , ",
            @"70147, ,Boston Univ East - Outbound, ,42.349773,-71.103867, , , ",
            @"70148, ,Blanford St - Inbound, ,42.349144,-71.100227, , , ",
            @"70149, ,Blandford St - Outbound, ,42.349323,-71.10025, , , ",
            @"70150, ,Kenmore Station - Inbound, ,42.348949,-71.095169, , ,place-kencl",
            @"70151, ,Kenmore Station - Outbound, ,42.348949,-71.095169, , ,place-kencl",
            @"70152, ,Hynes Station - Inbound, ,42.347888,-71.087903, , ,place-hymnl",
            @"70153, ,Hynes Station - Outbound, ,42.347888,-71.087903, , ,place-hymnl",
            @"70154, ,Copley Station - Inbound, ,42.349974,-71.077447, , ,place-coecl",
            @"70155, ,Copley Station - Outbound, ,42.349974,-71.077447, , ,place-coecl",
            @"70156, ,Arlington Station - Inbound, ,42.351902,-71.070893, , ,place-armnl",
            @"70157, ,Arlington Station - Outbound, ,42.351902,-71.070893, , ,place-armnl",
            @"70158, ,Boylston Station - Inbound, ,42.352352,-71.064598, , , ",
            @"70159, ,Boylston Station - Outbound, ,42.35244,-71.064758, , , ",
            @"70160, ,Riverside Station - Inbound, ,42.337059,-71.251742, , ,place-river",
            @"70161, ,Riverside Station - Green Line, ,42.337059,-71.251742, , ,place-river",
            @"70162, ,Woodland Station - Inbound, ,42.333355,-71.244331, , , ",
            @"70163, ,Woodland Station - Outbound, ,42.333385,-71.244301, , , ",
            @"70164, ,Waban Station - Inbound, ,42.325996,-71.230705, , , ",
            @"70165, ,Waban Station - Outbound, ,42.326027,-71.230667, , , ",
            @"70166, ,Eliot Station - Inbound, ,42.318764,-71.21701, , , ",
            @"70167, ,Eliot Station - Outbound, ,42.318794,-71.216995, , , ",
            @"70168, ,Newton Highlands Station - Inbound, ,42.321556,-71.205963, , , ",
            @"70169, ,Newton Highlands Station - Outbound, ,42.321579,-71.206001, , , ",
            @"70170, ,Newton Centre Station - Inbound, ,42.328373,-71.194435, , , ",
            @"70171, ,Newton Centre Station - Outbound, ,42.328403,-71.194466, , , ",
            @"70172, ,Chestnut Hill Station - Inbound, ,42.326618,-71.165283, , , ",
            @"70173, ,Chestnut Hill Station - Outbound, ,42.326653,-71.165314, , , ",
            @"70174, ,Reservoir Station - Inbound, ,42.335027,-71.148952, , ,place-rsmnl",
            @"70175, ,Reservoir Station - Outbound, ,42.335027,-71.148952, , ,place-rsmnl",
            @"70176, ,Beaconsfield Station - Inbound, ,42.335823,-71.140839, , , ",
            @"70177, ,Beaconsfield Station - Outbound, ,42.335861,-71.140823, , , ",
            @"70178, ,Brookline Hills Station - Inbound, ,42.33115,-71.127022, , , ",
            @"70179, ,Brookline Hills Station - Outbound, ,42.331188,-71.127014, , , ",
            @"70180, ,Brookline Village Station - Inbound, ,42.332774,-71.116296, , ,place-bvmnl",
            @"70181, ,Brookline Village Station - Outbound, ,42.332774,-71.116296, , ,place-bvmnl",
            @"70182, ,Longwood Station - Inbound, ,42.341061,-71.110207, , , ",
            @"70183, ,Longwood Station - Outbound, ,42.341084,-71.110245, , , ",
            @"70186, ,Fenway Station - Inbound, ,42.345364,-71.104149, , , ",
            @"70187, ,Fenway Station - Outbound, ,42.345398,-71.104179, , , ",
            @"70196, ,Park St Station - Green Line - B Berth, ,42.35639457,-71.0624242, , ,place-pktrm",
            @"70197, ,Park St Station - Green Line - C Branch Berth, ,42.35639457,-71.0624242, , ,place-pktrm",
            @"70198, ,Park St Station - Green Line - D Branch Berth, ,42.35639457,-71.0624242, , ,place-pktrm",
            @"70199, ,Park St Station - Green Line - E Line Berth, ,42.35639457,-71.0624242, , ,place-pktrm",
            @"70200, ,Park St Station - Green Line Eastbound, ,42.35639457,-71.0624242, , ,place-pktrm",
            @"70201, ,Government Center Station - Green Line Eastbound, ,42.359705,-71.059215, , ,place-gover",
            @"70202, ,Government Center Station - Green Line Westbound, ,42.359705,-71.059215, , ,place-gover",
            @"70203, ,Haymarket - Green Line Outbound, ,42.363021,-71.05829, , ,place-haecl",
            @"70204, ,Haymarket - Green Line Inbound, ,42.363021,-71.05829, , ,place-haecl",
            @"70205, ,North Station - Green Line Outbound, ,42.365494,-71.060913, , , ",
            @"70206, ,North Station - Green Line Inbound, ,42.365463,-71.060982, , , ",
            @"70207, ,Science Park - Green Line Outbound, ,42.366664,-71.067666, , ,place-spmnl",
            @"70208, ,Science Park - Green Line Inbound, ,42.366664,-71.067666, , ,place-spmnl",
            @"70209, ,Lechmere - Green Line, ,42.370772,-71.076536, , ,place-lech",
            @"70210, ,Lechmere - Green Line Inbound, ,42.370772,-71.076536, , ,place-lech",
            @"70211, ,Saint Mary St - Outbound, ,42.345997,-71.107399, , , ",
            @"70212, ,Saint Mary St - Inbound, ,42.345966,-71.107376, , , ",
            @"70213, ,Hawes St - Outbound, ,42.344921,-71.111137, , , ",
            @"70214, ,Hawes St - Inbound, ,42.344887,-71.111122, , , ",
            @"70215, ,Kent St - Outbound, ,42.344086,-71.114189, , , ",
            @"70216, ,Kent St - Inbound, ,42.344139,-71.113876, , , ",
            @"70217, ,Saint Paul St - Outbound, ,42.343327,-71.117058, , , ",
            @"70218, ,Saint Paul St - Inbound, ,42.343384,-71.116753, , , ",
            @"70219, ,Coolidge Corner - Outbound, ,42.342228,-71.121201, , , ",
            @"70220, ,Coolidge Corner - Inbound, ,42.342079,-71.121147, , , ",
            @"70223, ,Summit Ave - Outbound, ,42.341145,-71.125618, , , ",
            @"70224, ,Summit Ave - Inbound, ,42.340961,-71.125175, , , ",
            @"70225, ,Brandon Hall - Outbound, ,42.340023,-71.129074, , , ",
            @"70226, ,Brandon Hall - Inbound, ,42.339699,-71.129318, , , ",
            @"70227, ,Fairbanks St - Outbound, ,42.339863,-71.131081, , , ",
            @"70228, ,Fairbanks St - Inbound, ,42.339436,-71.131393, , , ",
            @"70229, ,Washington Sq - Outbound, ,42.339455,-71.135429, , , ",
            @"70230, ,Washington Sq - Outbound, ,42.339321,-71.135033, , , ",
            @"70231, ,Tappan St - Outbound, ,42.338528,-71.138718, , , ",
            @"70232, ,Tappan St - Inbound, ,42.338486,-71.138695, , , ",
            @"70233, ,Dean Rd - Outbound, ,42.337826,-71.141861, , , ",
            @"70234, ,Dean Rd - Inbound, ,42.337864,-71.141541, , , ",
            @"70235, ,Englewood Ave - Outbound, ,42.337017,-71.145668, , , ",
            @"70236, ,Englewood Ave - Inbound, ,42.337067,-71.145348, , , ",
            @"70237, ,Cleveland Circle Platform, ,42.336142,-71.149326, , ,place-clmnl",
            @"70238, ,Cleveland Circle Platform - Inbound, ,42.336142,-71.149326, , ,place-clmnl",
            @"70239, ,Prudential Station - Outbound, ,42.34557,-71.081696, , ,place-prmnl",
            @"70240, ,Prudential Station - Inbound, ,42.34557,-71.081696, , ,place-prmnl",
            @"70241, ,Symphony Station - Outbound, ,42.342687,-71.085056, , ,place-symcl",
            @"70242, ,Symphony Station - Inbound, ,42.342687,-71.085056, , ,place-symcl",
            @"70243, ,Northeastern - Outbound, ,42.340416,-71.088806, , , ",
            @"70244, ,Northeastern - Inbound, ,42.340431,-71.088737, , , ",
            @"70245, ,Museum of Fine Arts - Outbound, ,42.337727,-71.095512, , , ",
            @"70246, ,Museum of Fine Arts - Inbound, ,42.337749,-71.095451, , , ",
            @"70247, ,Longwood Med Area - Outbound, ,42.335972,-71.100044, , , ",
            @"70248, ,Longwood Med Area - Inbound, ,42.335934,-71.10006, , , ",
            @"70249, ,Brigham Circle - Outbound, ,42.334229,-71.104609, , ,place-brmnl",
            @"70250, ,Brigham Circle - Inbound, ,42.334229,-71.104609, , ,place-brmnl",
            @"70251, ,Fenwood Rd - Outbound, ,42.33366,-71.105644, , , ",
            @"70252, ,Fenwood Rd - Inbound, ,42.333729,-71.105751, , , ",
            @"70253, ,Mission Park - Outbound, ,42.333214,-71.10981, , , ",
            @"70254, ,Mission Park - Inbound, ,42.333138,-71.109688, , , ",
            @"70255, ,Riverway - Outbound, ,42.331692,-71.111954, , , ",
            @"70256, ,Riverway - Inbound, ,42.331692,-71.111954, , , ",
            @"70257, ,Back of Hill - Outbound, ,42.330151,-71.111328, , , ",
            @"70258, ,Back of Hill - Inbound, ,42.330151,-71.111328, , , ",
            @"70260, ,Heath St Platform - Green Line E, ,42.328681,-71.110559, , ,place-hsmnl",
            @"70261, ,Ashmont Station - Westbound, ,42.284652,-71.064489, , ,place-asmnl",
            @"70262, ,Ashmont Station - Eastbound, ,42.284652,-71.064489, , ,place-asmnl",
            @"70263, ,Cedar Grove - Westbound, ,42.279713,-71.060364, , , ",
            @"70264, ,Cedar Grove - Eastbound, ,42.279728,-71.060318, , , ",
            @"70265, ,Butler Station - Westbound, ,42.272297,-71.062477, , , ",
            @"70266, ,Butler Station - Eastbound, ,42.27227,-71.062447, , , ",
            @"70267, ,Milton Station - Westbound, ,42.270142,-71.067627, , , ",
            @"70268, ,Milton Station - Eastbound, ,42.270111,-71.067604, , , ",
            @"70269, ,Central Ave - Westbound, ,42.269943,-71.073608, , , ",
            @"70270, ,Central Ave - Eastbound, ,42.269981,-71.073242, , , ",
            @"70271, ,Valley Rd - Westbound, ,42.26786,-71.082809, , , ",
            @"70272, ,Valley Rd - Eastbound, ,42.267792,-71.083015, , , ",
            @"70273, ,Capen St - Westbound, ,42.267727,-71.087753, , , ",
            @"70274, ,Capen St - Eastbound, ,42.267639,-71.087433, , , ",
            @"70275, ,Mattapan Station - Westbound, ,42.267762,-71.092241, , ,place-matt",
            @"70276, ,Mattapan Station - Eastbound, ,42.267762,-71.092241, , ,place-matt",
            @"74611, ,So Station Silver Line (outbound), ,42.352271,-71.055242, , ,place-sstat",
            @"74612, ,Court House Station (outbound), ,42.352493,-71.047401, , , ",
            @"74613, ,World Trade Center Sta (outbound), ,42.348816,-71.042221, , , ",
            @"74614, ,Silver Line Way before Manulife  Building, ,42.347946,-71.039284, , , ",
            @"74615, ,World trade Center/inbound, ,42.348923,-71.042229, , , ",
            @"74616, ,Court House Station (inbound), ,42.352604,-71.047409, , , ",
            @"74617, ,So Station Silver Line (inbound), ,42.352271,-71.055242, , ,place-sstat",
            @"74624, ,Silver Line Way after Manulife Building, ,42.347675,-71.038879, , , ",
            @"8279, ,Tremont St opp Avery St, ,42.35326,-71.064354, , , ",
            @"Abington, ,Abington, ,42.108034,-70.935296, ,0, ",
            @"Anderson/ Woburn, ,Anderson/ Woburn, ,42.518082,-71.13865, ,0, ",
            @"Andover, ,Andover, ,42.657798,-71.144513, ,0, ",
            @"Ashland, ,Ashland, ,42.261694,-71.478813, ,0, ",
            @"Attleboro, ,Attleboro, ,41.942097,-71.284897, ,0, ",
            @"Auburndale, ,Auburndale, ,42.346087,-71.246658, ,0, ",
            @"Ayer, ,Ayer, ,42.560047,-71.590117, ,0, ",
            @"Back Bay, ,Back Bay, ,42.347158,-71.075769, ,0, ",
            @"Ballardvale, ,Ballardvale, ,42.626449,-71.159653, ,0, ",
            @"Bellevue, ,Bellevue, ,42.287138,-71.14606, ,0, ",
            @"Belmont, ,Belmont, ,42.39842,-71.174499, ,0, ",
            @"Beverly, ,Beverly, ,42.546907,-70.885168, ,0, ",
            @"Beverly Farms, ,Beverly Farms, ,42.561403,-70.812745, ,0, ",
            @"Bradford, ,Bradford, ,42.768899,-71.085998, ,0, ",
            @"Braintree, ,Braintree, ,42.20855,-71.00085, ,0, ",
            @"Brandeis/ Roberts, ,Brandeis/ Roberts, ,42.361728,-71.260854, ,0, ",
            @"Bridgewater, ,Bridgewater, ,41.986355,-70.966625, ,0, ",
            @"Brockton, ,Brockton, ,42.08572,-71.01686, ,0, ",
            @"Campello, ,Campello, ,42.060038,-71.01246, ,0, ",
            @"Canton Center, ,Canton Center, ,42.156769,-71.14553, ,0, ",
            @"Canton Junction, ,Canton Junction, ,42.163423,-71.153374, ,0, ",
            @"Chelsea, ,Chelsea, ,42.395661,-71.034826, ,0, ",
            @"Cohasset, ,Cohasset, ,42.2424,-70.837, ,0, ",
            @"Concord, ,Concord, ,42.457147,-71.358051, ,0, ",
            @"Dedham Corp Center, ,Dedham Corp Center, ,42.225896,-71.173806, ,0, ",
            @"East Weymouth, ,East Weymouth, ,42.2191,-70.9214, ,0, ",
            @"Endicott, ,Endicott, ,42.232881,-71.160413, ,0, ",
            @"Fairmount, ,Fairmount, ,42.253638,-71.11927, ,0, ",
            @"Fitchburg, ,Fitchburg, ,42.581739,-71.79275, ,0, ",
            @"Forest Hills, ,Forest Hills, ,42.300023,-71.113377, ,0,place-forhl",
            @"Forge Park / 495, ,Forge Park / 495, ,42.090704,-71.430342, ,0, ",
            @"Framingham, ,Framingham, ,42.276719,-71.416792, ,0, ",
            @"Franklin, ,Franklin, ,42.083591,-71.396735, ,0, ",
            @"Gloucester, ,Gloucester, ,42.616069,-70.668767, ,0, ",
            @"Grafton, ,Grafton, ,42.246291,-71.684614, ,0, ",
            @"Greenbush, ,Greenbush, ,42.1781,-70.7462, ,0, ",
            @"Greenwood, ,Greenwood, ,42.483473,-71.067233, ,0, ",
            @"Halifax, ,Halifax, ,42.012867,-70.820832, ,0, ",
            @"Hamilton/ Wenham, ,Hamilton/ Wenham, ,42.610756,-70.874005, ,0, ",
            @"Hanson, ,Hanson, ,42.043262,-70.881553, ,0, ",
            @"Hastings, ,Hastings, ,42.385755,-71.289203, ,0, ",
            @"Haverhill, ,Haverhill, ,42.772684,-71.085962, ,0, ",
            @"Hersey, ,Hersey, ,42.275842,-71.214853, ,0, ",
            @"Highland, ,Highland, ,42.284869,-71.1547, ,0, ",
            @"Holbrook/ Randolph, ,Holbrook/ Randolph, ,42.155314,-71.027518, ,0, ",
            @"Hyde Park, ,Hyde Park, ,42.255121,-71.125022, ,0, ",
            @"Ipswich, ,Ipswich, ,42.678355,-70.840024, ,0, ",
            @"Islington, ,Islington, ,42.220714,-71.183406, ,0, ",
            @"JFK/UMASS, ,JFK/UMASS, ,42.321123,-71.052555, ,0, ",
            @"Kendal Green, ,Kendal Green, ,42.37897,-71.282411, ,0, ",
            @"Kingston, ,Kingston, ,41.978548,-70.720315, ,0, ",
            @"Lawrence, ,Lawrence, ,42.700094,-71.159797, ,0, ",
            @"Lincoln, ,Lincoln, ,42.414229,-71.325344, ,0, ",
            @"Littleton / Rte 495, ,Littleton / Rte 495, ,42.519236,-71.502643, ,0, ",
            @"Lowell, ,Lowell, ,42.638402,-71.314916, ,0, ",
            @"Lynn, ,Lynn, ,42.462293,-70.947794, ,0, ",
            @"Malden Center, ,Malden Center, ,42.426407,-71.074227, ,0, ",
            @"Manchester, ,Manchester, ,42.57357,-70.770473, ,0, ",
            @"Mansfield, ,Mansfield, ,42.032734,-71.219318, ,0, ",
            @"Melrose Cedar Park, ,Melrose Cedar Park, ,42.459128,-71.069448, ,0, ",
            @"Melrose Highlands, ,Melrose Highlands, ,42.468793,-71.06827, ,0, ",
            @"Middleboro/ Lakeville, ,Middleboro/ Lakeville, ,41.87821,-70.918444, ,0, ",
            @"Mishawum, ,Mishawum, ,42.503595,-71.137511, ,0, ",
            @"Montello, ,Montello, ,42.106047,-71.021078, ,0, ",
            @"Montserrat, ,Montserrat, ,42.561483,-70.870035, ,0, ",
            @"Morton Street, ,Morton Street, ,42.280994,-71.085475, ,0, ",
            @"Nantasket Junction, ,Nantasket Junction, ,42.2452,-70.8698, ,0, ",
            @"Natick, ,Natick, ,42.285239,-71.347641, ,0, ",
            @"Needham Center, ,Needham Center, ,42.280274,-71.238089, ,0, ",
            @"Needham Heights, ,Needham Heights, ,42.293139,-71.235087, ,0, ",
            @"Needham Junction, ,Needham Junction, ,42.273327,-71.238007, ,0, ",
            @"Newburyport, ,Newburyport, ,42.800292,-70.880262, ,0, ",
            @"Newtonville, ,Newtonville, ,42.351603,-71.207338, ,0, ",
            @"Norfolk, ,Norfolk, ,42.120694,-71.325217, ,0, ",
            @"North Beverly, ,North Beverly, ,42.582471,-70.884501, ,0, ",
            @"North Billerica, ,North Billerica, ,42.592881,-71.280869, ,0, ",
            @"North Leominster, ,North Leominster, ,42.540577,-71.739402, ,0, ",
            @"North Scituate, ,North Scituate, ,42.2197,-70.7877, ,0, ",
            @"North Station, ,North Station, ,42.365551,-71.061251, ,0, ",
            @"North Wilmington, ,North Wilmington, ,42.568462,-71.159724, ,0, ",
            @"Norwood Central, ,Norwood Central, ,42.190776,-71.199748, ,0, ",
            @"Norwood Depot, ,Norwood Depot, ,42.195668,-71.196784, ,0, ",
            @"Plimptonville, ,Plimptonville, ,42.159123,-71.236125, ,0, ",
            @"Plymouth, ,Plymouth, ,41.981184,-70.692514, ,0, ",
            @"Porter Square, ,Porter Square, ,42.388353,-71.119159, ,0, ",
            @"Prides Crossing, ,Prides Crossing, ,42.559513,-70.824813, ,0, ",
            @"Providence, ,Providence, ,41.829641,-71.413332, ,0, ",
            @"Quincy Center, ,Quincy Center, ,42.250862,-71.004843, ,0, ",
            @"Reading, ,Reading, ,42.52148,-71.10744, ,0, ",
            @"Readville, ,Readville, ,42.23775,-71.132376, ,0, ",
            @"River Works, ,River Works, ,42.453804,-70.975698, ,0, ",
            @"Rockport, ,Rockport, ,42.656173,-70.625616, ,0, ",
            @"Roslindale Village, ,Roslindale Village, ,42.287206,-71.12961, ,0, ",
            @"Route 128, ,Route 128, ,42.209884,-71.1471, ,0, ",
            @"Rowley, ,Rowley, ,42.725351,-70.859436, ,0, ",
            @"Ruggles, ,Ruggles, ,42.335545,-71.090524, ,0, ",
            @"Salem, ,Salem, ,42.523927,-70.898903, ,0, ",
            @"Sharon, ,Sharon, ,42.124804,-71.183213, ,0, ",
            @"Shirley, ,Shirley, ,42.544726,-71.648363, ,0, ",
            @"Silver Hill, ,Silver Hill, ,42.395625,-71.302357, ,0, ",
            @"South Acton, ,South Acton, ,42.461575,-71.455322, ,0, ",
            @"South Attleboro, ,South Attleboro, ,41.897943,-71.354621, ,0, ",
            @"South Station, ,South Station, ,42.352614,-71.055364, ,0, ",
            @"South Weymouth, ,South Weymouth, ,42.153747,-70.95249, ,0, ",
            @"Southborough, ,Southborough, ,42.267518,-71.523621, ,0, ",
            @"Stoughton, ,Stoughton, ,42.123818,-71.10309, ,0, ",
            @"Swampscott, ,Swampscott, ,42.473739,-70.922036, ,0, ",
            @"Uphams Corner, ,Uphams Corner, ,42.31867,-71.069072, ,0, ",
            @"Wakefield, ,Wakefield, ,42.501811,-71.075, ,0, ",
            @"Walpole, ,Walpole, ,42.144192,-71.259016, ,0, ",
            @"Waltham, ,Waltham, ,42.374424,-71.236595, ,0, ",
            @"Waverley, ,Waverley, ,42.387489,-71.189864, ,0, ",
            @"Wedgemere, ,Wedgemere, ,42.445284,-71.140909, ,0, ",
            @"Wellesley Farms, ,Wellesley Farms, ,42.323608,-71.272288, ,0, ",
            @"Wellesley Hills, ,Wellesley Hills, ,42.310027,-71.276769, ,0, ",
            @"Wellesley Square, ,Wellesley Square, ,42.296427,-71.294311, ,0, ",
            @"West Concord, ,West Concord, ,42.456372,-71.392371, ,0, ",
            @"West Gloucester, ,West Gloucester, ,42.610928,-70.706456, ,0, ",
            @"West Hingham, ,West Hingham, ,42.2367,-70.9031, ,0, ",
            @"West Medford, ,West Medford, ,42.421184,-71.132468, ,0, ",
            @"West Natick, ,West Natick, ,42.281855,-71.390548, ,0, ",
            @"West Newton, ,West Newton, ,42.348599,-71.22901, ,0, ",
            @"West Roxbury, ,West Roxbury, ,42.2816,-71.159932, ,0, ",
            @"Westborough, ,Westborough, ,42.269184,-71.652005, ,0, ",
            @"Weymouth Landing/ East Braintree, ,Weymouth Landing/ East Braintree, ,42.2208,-70.9682, ,0, ",
            @"Whitman, ,Whitman, ,42.083563,-70.923204, ,0, ",
            @"Wilmington, ,Wilmington, ,42.546368,-71.173569, ,0, ",
            @"Winchester Center, ,Winchester Center, ,42.45265,-71.137041, ,0, ",
            @"Windsor Gardens, ,Windsor Gardens, ,42.172192,-71.220704, ,0, ",
            @"Worcester / Union Station, ,Worcester / Union Station, ,42.261796,-71.793881, ,0, ",
            @"Wyoming Hill, ,Wyoming Hill, ,42.452097,-71.069518, ,0, ",
            @"Yawkey, ,Yawkey, ,42.346796,-71.098937, ,0, ",
            @"Boat-Hull, ,""Pemberton Point, Hull"", ,42.303251,-70.920215, ,0, ",
            @"Boat-Quincy, ,""Fore River Shipyard, Quincy"", ,42.243321,-70.974112, ,0, ",
            @"Boat-Logan, ,Logan Ferry Terminal, ,42.362527,-71.025373, ,0, ",
            @"Boat-Aquarium, ,""Central Wharf (Aquarium), Boston"", ,42.358915,-71.050242, ,0, ",
            @"Boat-Long, ,""Long Wharf, Boston"", ,42.360018,-71.050247, ,0, ",
            @"Boat-Charlestown, ,Charlestown Navy Yard, ,42.374028,-71.053227, ,0, ",
            @"Boat-George, ,George's Island, ,42.319742,-70.930427, ,0, ",
            @"Boat-Rowes, ,""Rowes Wharf, Boston"", ,42.355721,-71.049897, ,0, ",
            @"Boat-Hingham, ,""Hewitt's Cove, Hingham"", ,42.252643,-70.919875, ,0, ",
            @"Logan-E, ,Logan Airport Terminal E, ,42.370022,-71.020754, ,0, ",
            @"Logan-Subway, ,Aiport Subway Station, ,42.374699,-71.029831, ,0, ",
            @"Logan-A, ,Logan Airport Terminal A, ,42.364426,-71.022093, ,0, ",
            @"Logan-Dock, ,Logan Aiport Ferry Terminal, ,42.362527,-71.025373, ,0, ",
            @"Logan-B, ,Logan Airport Terminal B, ,42.361302,-71.018648, ,0, ",
            @"Logan-C, ,Logan Airport Terminal C, ,42.367271,-71.017957, ,0, ",
        };

        #endregion

        public TransitStopLoaderTest()
        {

        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentException))]
        public void Should_Barf_On_Files_Not_Named_Stops_txt()
        {
            string[] tmpContents = { "blah", "blah2" };
            var loader = new TransitStopLoader(new GTFSFile(@"C:\blah\somethingelse.txt", tmpContents));
        }

        [TestMethod]
        public void Should_Extract_512_Stops_From_TestFile_Stops_Data()
        {
            var loader = new TransitStopLoader(new GTFSFile(@"c:\blah\stops.txt", testContents));
            bool done = false;
            loader.DoneProcessing += (x, y) => done = true;
            loader.ProcessFile();
            while (!done)
            { Thread.Sleep(250); }

            Assert.AreEqual<int>(512, loader.Items.Count);
        }

        /// <summary>
        ///A test for ProcessItem
        ///</summary>
        [TestMethod()]
        public void Should_Process_TestFile_Lines_To_TransitStops()
        {
            // Arrange
            IGTFSFile file = new GTFSFile("stops.txt", testContents);
            TransitStopLoader target = new TransitStopLoader(file);
            bool done = false;
            target.DoneProcessing += (x, y) => done = true;

            target.ProcessFile();
            while (!done)
            { Thread.Sleep(250); }

            // Assign
            var targ = target.Items[0];

            // Assert
            // @"stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,zone_id,location_type,parent_station",
            // @"place-alfcl, ,Alewife Station, ,42.395428,-71.142483, ,1, "
            Assert.AreEqual<string>("place-alfcl", targ.Id);
            Assert.AreEqual<string>("", targ.Code);
            Assert.AreEqual<string>("Alewife Station", targ.Name);
            Assert.AreEqual<string>("", targ.Description);
            Assert.AreEqual<double>(42.395428, targ.Latitude);
            Assert.AreEqual<double>(-71.142483, targ.Longitude);
            Assert.AreEqual<string>("", targ.Zone_Id);
            Assert.AreEqual<string>("1", targ.Location_Type);
            Assert.AreEqual<string>("", targ.Parent_Station);
        }

        [TestMethod()]
        public void Should_Fire_StopLoaded_Event_After_Processing_ValidLine()
        {
            // Arrange
            IGTFSFile file = new GTFSFile("stops.txt", testContents);
            TransitStopLoader target = new TransitStopLoader(file);
            int fired = 0;
            bool done = false;

            target.ItemLoaded += new ItemLoadedEvent<ITransitStop>((x, y) => fired++);
            target.DoneProcessing += (x, y) => done = true;

            target.ProcessFile();
            while (!done)
            { Thread.Sleep(250); }

            Assert.AreEqual<int>(512, fired);
        }

        /// <summary>
        ///A test for ProcessItem
        ///</summary>
        [TestMethod()]
        public void Should_Not_Process_Items_With_Bad_LatLong()
        {
            // Arrange
            IGTFSFile file = new GTFSFile("stops.txt", testContents);
            TransitStopLoader target = new TransitStopLoader(file);
            Dictionary<string, string> dict = new Dictionary<string, string>();
            dict.Add("stop_lat", "notanumber");
            dict.Add("stop_lon", "notanumber");
            ICSVLine line = new CSVLine(dict);

            Assert.AreEqual<int>(0, target.Items.Count);

            // Process
            target.ProcessItem(line);

            // Assert
            Assert.AreEqual<int>(0, target.Items.Count);
        }
    }
}
